package Wrap;

public class WrapIntroduce {
    public static void main(String[] args) {
         /*
    public Integer(int value)    根据传递的整数创建一个Integer对象
    public Integer(String s)       根据传递的字符巾创建一个Integer对象
    public static Integer valueof(int i)         根据传递的整数创建一个Integer对象
    publicstatic Integer valueOf(String s)        根据传递的字符串创建一个Integer对象
    static Integer valueof(String s. int radix)         根据传递的字符巾和进制创建一个Integer对象
     */

        //利用构造方法获取Integar对象(jdk5以前的方法)
        Integer i1=new Integer(1);
        Integer i2=new Integer("1");
        System.out.println(i1);
        System.out.println(i2);

        //利用静态方法获取Integar对对象(jdk5以前的方法)
        Integer i3=Integer.valueOf(123);
        Integer i4=Integer.valueOf("123");
        Integer i5=Integer.valueOf("123",8);//8进制

        System.out.println(i3);
        System.out.println(i4);
        System.out.println(i5);

        //两者的区别
        //原理
        //在实际开发中，-128~127之间的数据，用的比较多
        //如果每次所有都new对象，那么太浪费内层
        //所有，提取把这个范围之内的每一个数据都创建好对象
        //如果要用到了不会创建新的，而是返回已经创建好的对象
        Integer i6=Integer.valueOf(127);
        Integer i7=Integer.valueOf(127);
        System.out.println(i6==i7);//在-128~127之内，所以为true
        //比较地址值
        Integer i8=Integer.valueOf(128);
        Integer i9=Integer.valueOf(128);
        System.out.println(i8==i9);//因为超出范围，所以为new一个新对象，因此为false

        //因为看到new 关键字,在Java中，每一次new都是创建了一个新的对象
        //所以下面的两个对象都是new出来，地址值不一样
        Integer i10=new Integer(127);
        Integer i11=new Integer(127);
        System.out.println(i10==i11);




    }


}
